{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "import pickle\n",
    "import cv2\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**导入测试集**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "pick_in = open('data_test.pickle','rb')\n",
    "data = pickle.load(pick_in)\n",
    "pick_in.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**导入模型**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "pick = open('model.sav','rb')\n",
    "model = pickle.load(pick)\n",
    "pick.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**测试集打乱，计算precision**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "random.shuffle(data)\n",
    "features = []\n",
    "labels = []\n",
    "for feature,label in data:\n",
    "    features.append(feature)\n",
    "    labels.append(label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "prediction = model.predict(features)\n",
    "accurancy = model.score(features,labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9077743902439024\n"
     ]
    }
   ],
   "source": [
    "print(accurancy)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**f1_score**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9006473667732184"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import metrics\n",
    "\n",
    "metrics.f1_score(labels, prediction, average='weighted') "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                precision    recall  f1-score   support\n",
      "\n",
      "Apple Braeburn       0.91      0.76      0.83       164\n",
      "    Grape Blue       0.99      1.00      1.00       328\n",
      "     Pineapple       0.74      1.00      0.85       166\n",
      "    Strawberry       1.00      0.50      0.67       164\n",
      "        Banana       1.00      1.00      1.00       166\n",
      "        Orange       0.80      1.00      0.89       160\n",
      "   Pomegranate       0.95      1.00      0.97       164\n",
      "\n",
      "      accuracy                           0.91      1312\n",
      "     macro avg       0.91      0.89      0.89      1312\n",
      "  weighted avg       0.92      0.91      0.90      1312\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "y_true = labels\n",
    "y_pred = prediction\n",
    "target_names = categories\n",
    "print(classification_report(y_true, y_pred, target_names=target_names))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x2658ea0e4c0>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "metrics.plot_confusion_matrix(estimator=model, X=features, y_true=labels,display_labels=categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "?metrics.plot_confusion_matrix"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**网图测试大失败**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "prediction is : Banana\n"
     ]
    }
   ],
   "source": [
    "fruit_img = cv2.imread(\"fengli.jpg\",0)\n",
    "fruit_img =cv2.resize(fruit_img,(50,50))\n",
    "image = np.array(fruit_img).flatten()\n",
    "images = [image]\n",
    "predict = model.predict(images)\n",
    "categories = ['Apple Braeburn','Grape Blue','Pineapple','Strawberry','Banana','Orange','Pomegranate']\n",
    "print('prediction is :',categories[predict[0]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "fruit_img = cv2.imread(\"./data/Test/4_100.jpg\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "myfruit = images[0].reshape(50,50)\n",
    "cv2.imshow(\"fruit :\",myfruit)\n",
    "cv2.waitKey(0)\n",
    "cv2.destroyAllWindows()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
